package DAL
{
	import MUNDO.Partida;
	
	import flash.events.Event;
	import flash.events.TimerEvent;
	import flash.net.URLLoader;
	
	import playerio.Client;
	import playerio.Connection;
	import playerio.DatabaseObject;
	
	/**
	 * Clase que gestiona la validación de respuesta para preguntas cerradas y preguntas abiertas
	 * @author Grupo FourthWorld
	 * @since  1.0
	 */
	
	public class RespuestaDAO
	{
		//Atributos
		private static var _perdio:Boolean = false;
		private  var _triviador:Triviador;
		
		//Accessors
		public function get perdio():Boolean
		{
			return _perdio;
		}
		
		//Métodos
		/**
		 * Genera un objeto que contiene la respuesta de un Jugador.
		 *@param text Contiene la respuesta que dio el jugador a la pregunta
		 *@param aleatorio número de pregunta generado aleatoriamente
		 *@param tipo Indica el tipo de la pregunta si esta es cerrada o abierta
		 *@param triviador que mantiene una referencia al archivo Triviador.fla
		 *
		 */
		public function RespuestaDAO(respuesta:String, aleatorio:String, tipo:String, triviador:Triviador)
		{
			_perdio = false;
			_triviador = triviador;
			if (tipo == "cerrada") {
				comparaRespuestasCerradas(Partida.client, respuesta, aleatorio);
			}
			else if (tipo == "abierta"){
				comparaRespuestasAbiertas (Partida.client, respuesta, aleatorio);
			}
		}
		
		/**
		 * Función que valida la respuesta a una pregunta cerrada
		 *@param cliente que desea realizar la validacion de la respuesta
		 *@param text Contiene la respuesta que dio el jugador a la pregunta
		 *@param aleatorio número de pregunta generado aleatoriamente
		 *@param connection envia respuesta al servidor.  		
		 */
		public function comparaRespuestasCerradas (cliente:Client, respuesta:String, aleatorio:String): void {
			cliente.bigDB.load("PreguntaCerrada", aleatorio ,
				function (obj:DatabaseObject):void 
				{	
					if (obj.correcta == respuesta ) {
						trace ("CORRECTO");
						Partida.conexion.connection.send("WinPregCerradas");
						_perdio = false;
					}
					else {
						//************inicio*******************************************************************************************************************************************
						trace ("FALLASTE");
						Partida.conexion.connection.send("LosePregCerradas");
						_perdio = true;
						_triviador.gotoAndStop(1,"Escena 7");
					}
				}
			);
		}
		
		/**
		 * Función que valida la respuesta a una pregunta abierta
		 *@param cliente que desea realizar la validacion de la respuesta
		 *@param text Contiene la respuesta que dio el jugador a la pregunta
		 *@param aleatorio número de pregunta generado aleatoriamente
		 *@param connection envia respuesta al servidor.  		
		 */
		
		public function comparaRespuestasAbiertas (cliente:Client, text:String, aleatorio:String): void {
			
			trace ("COMPROBANDO RESPUESTA ABIERTA para " + aleatorio);
			Partida.client.bigDB.load("PreguntaAbierta", aleatorio ,
				function (obj:DatabaseObject):void 
				{
					trace ("-- RESPUESTA: " + obj.correcta);
					if (obj.correcta == text){
						trace ("PERFECTO");
						//Triviador.minuteTimer.stop();
						//Triviador.minuteTimer.reset();
						Partida.conexion.connection.send("Win");
						_perdio = false;
					} else {
						//Triviador.minuteTimer.stop();
						//Triviador.minuteTimer.reset();
						_perdio = true;		
						Partida.conexion.connection.send("Lose", Math.abs((parseInt(text)-parseInt(obj.correcta))));
					}
				}
			);
		}
		//*******************************************************************************************************************************************************
	} 
}